home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / rhythmbox / plugins / lyrics / LeoslyricsParser.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  2.3 KB  |  58 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import urllib
  5. import re
  6. import rb
  7.  
  8. try:
  9.     from xml.etree import cElementTree
  10. except:
  11.     import cElementTree
  12.  
  13.  
  14. class LeoslyricsParser(object):
  15.     
  16.     def __init__(self, artist, title):
  17.         self.artist = artist
  18.         self.title = title
  19.  
  20.     
  21.     def search(self, callback, *data):
  22.         artist = urllib.quote(self.artist)
  23.         title = urllib.quote(self.title)
  24.         htstring = 'http://api.leoslyrics.com/api_search.php?auth=Rhythmbox&artist=%s&songtitle=%s' % (artist, title)
  25.         loader = rb.Loader()
  26.         loader.get_url(htstring, self.got_lyrics, callback, *data)
  27.  
  28.     
  29.     def got_lyrics(self, lyrics, callback, *data):
  30.         if lyrics is None:
  31.             callback(None, *data)
  32.             return None
  33.         element = cElementTree.fromstring(lyrics)
  34.         if element.find('response').attrib['code'] is not '0':
  35.             print 'got failed response:' + lyrics
  36.             callback(None, *data)
  37.             return None
  38.         match = element.find('searchResults').find('result')
  39.         if match.attrib['exactMatch'] is None:
  40.             print 'no exact match:' + lyrics
  41.             callback(None, *data)
  42.             return None
  43.         lurl = 'http://api.leoslyrics.com/api_lyrics.php?auth=Rhythmbox&hid=%s' % urllib.quote(match.attrib['hid'].encode('utf-8'))
  44.         loader = rb.Loader()
  45.         loader.get_url(lurl, self.parse_lyrics, callback, *data)
  46.  
  47.     
  48.     def parse_lyrics(self, result, callback, *data):
  49.         if result is None:
  50.             callback(None, *data)
  51.             return None
  52.         element = cElementTree.fromstring(result)
  53.         lyrics = element.find('lyric').find('text').text
  54.         lyrics += '\n\nLyrics provided by leoslyrics.com'
  55.         callback(lyrics, *data)
  56.  
  57.  
  58.